//----------------------------------------------------------------------------------
// CBoard class
// Author: Enric Vergara
//
// Description:
// Esta clase se encarga de gestionar todos el board del juego
//----------------------------------------------------------------------------------
#pragma once
#ifndef INC_BOARD_H_
#define INC_BOARD_H_

#include <vector>
#include "Token.h"

class CBoard
{
public:
	CBoard(unsigned int columns, unsigned int rows);
	virtual ~CBoard() {/*Nothing todo*/;}

	unsigned int	GetNumColumns		() {return m_uColumns;}
	unsigned int	GetNumRows			() {return m_uRows;}
	unsigned int	GetSymbol				(unsigned int column, unsigned int row);
	bool					IsVisible				(unsigned int column, unsigned int row);
	void					SetVisible			(unsigned int column, unsigned int row, bool flag);
	void					GenerateNewGame	();	
	bool					IsAllVisible		();

private:
	CBoard();
	inline bool		IsInsideRang	(unsigned int i, unsigned int j);


private:
	std::vector< std::vector<CToken> >	m_Tokens;
	unsigned int	m_uColumns;
	unsigned int	m_uRows;
	
};

#endif //INC_BOARD_H_